1. Field
Aspects of embodiments of the present invention relate to methods to transport forward error correction (FEC) codes in a symbol encoded transmission stream.
2. Description of Related Art
High-speed data transmission may be implemented using a serial data link (e.g., one bit at a time, such as with a fiber optic cable link). A data stream may be composed of a number of bytes (e.g., 8-bit bytes). DC balancing, such as with an 8 b/10 b encoding, may be used to encode the data stream (“data bytes”) before transmitting (for example, 8-bit bytes may be converted to 10-bit symbols) so that the number of 0-bits being transmitted equals (or substantially equals, such as being no more than one or two off from) the number of I-bits being transmitted, and with no single burst of either 0-bits or 1-bits (e.g., no more than five consecutive 0-bits or 1-bits). The encoded data stream is then decoded on the receiving side, such as with a corresponding 10 b/8 b decoding, to recover the original data stream. These techniques may help, for example, with DC balancing, clock recovery, and phase recovery, such as helping receiving devices determine the transmission rate of the transmitted encoded data.
Forward error correction (FEC) codes, such as Hamming codes, Reed-Solomon codes, or low-density parity-check (LDPC) codes, may be used in data transmissions to improve reliability of the communication by providing redundant bits or bytes (“parity bits” or “parity bytes”) for error checking and error correction. These parity bits or bytes accompany the data transmission (data bits or bytes) and allow the receiver to verify the correct data was sent and may even allow the receiver the ability to correct a limited number of errors in the transmission. Hamming codes are relatively straightforward and efficient, but correct only a limited number of errors (e.g., a few bits). Reed-Solomon and LDPC codes are more computationally intensive than Hamming codes, but provide for significantly more errors to be detected or corrected (e.g., entire bytes).
Forward error correction may also be combined with DC balancing. For example, parity bits or bytes may be generated for a data stream (data bytes) for forward error correction, and the data plus parity bits or bytes encoded through DC balancing into symbols before being transmitted. The receiver then decodes the symbols and performs the error detection and correction using the decoded parity bits or bytes on the decoded data bits or bytes. However, this introduces a problem with errors introduced during the data transmission. For example, a corrupted symbol may be mapped to an invalid symbol or to a valid symbol representing a different byte, thus causing something as small as a one-bit error in transmission to result in multiple bit errors (e.g., an entire byte, which may include 8 separate bit errors) in the received data and parity. This may present problems for low-cost FEC algorithms such as Hamming codes, or force the use of a more complex FEC algorithm (such as Reed-Solomon or LDPC) to provide the capability to recover from one or more byte errors, versus only a few bit errors, which increases encoder and decoder complexity.